package cn.tedu.ximart.server.mapper;


import cn.tedu.ximart.server.pojo.entity.Brand;
import cn.tedu.ximart.server.pojo.vo.BrandDetailVO;
import cn.tedu.ximart.server.pojo.vo.BrandListItemVO;
import org.springframework.stereotype.Repository;

import java.util.List;


@Repository
public interface BrandMapper {

    /**
     * 插入品牌数据
     * @param brand 品牌数据
     * @return 受影响的行数，成功插入数据时将返回1
     */
    int insert(Brand brand);


    /**
     * 根据品牌id,删除品牌数据
     * @param id 期望删除的数据id
     * @return 受影响的行数，当删除成功时将返回1，如果无此id对应的数据将返回0
     */
    int deleteById(Long id);


    /**
     * 根据品牌id,批量删除品牌数据
     * @param ids  删除的数据id
     * @return 受影响的行数，当删除成功时将返回删除数量，如果无数据被删除将返回0
     */
    int deleteByIds(Long[] ids);


    /**
     * 根据品牌id修改品牌数据,未传入的数据（为null）不会被修改
     * @param brand 封装品牌id和数据的对象
     * @return 受影响的行数，成功修改数据后返回1，如果无此id对应的数据将返回0S.
     */
    int updateById(Brand brand);

    /**
     * 查询品牌数量
     * @return 返回值为查询到的数据条数
     */
    int count();

    /**
     * 根据品牌名称查询品牌数据的条数
     * @param name 品牌名称
     * @return 查询到的品牌数据的条数
     */
    int countByName(String name);

    /**
     * 根据id查询品牌数据
     * @param id 需要查询的id
     * @return 查询成功返回品牌数据，如果无此id对应的数据则返回null
     */
    BrandDetailVO selectById(Long id);


    /**
     * 查询品牌列表项
     * @return 返回值为品牌列表
     */
    List<BrandListItemVO> list();

    List<BrandListItemVO> listLimit(Integer offset,Integer count);

    BrandDetailVO getByName(String name);

}
